
********************************
■■■■
■ ■ ■ ■
■ ■■■ ■■■
■ ■ ■ ■
■■■■
〜基礎から ★ C++Programing〜
********************************
【注意】 このマガジンは、最大化してお読みください。
また、等角フォントでお読みください。
(MS ゴシックなど)
********************************
発行者 むーくん
マガジンNO. 69(5−9)訂正
発行日 2001/2/18
講読人数 2000名ぐらい
マガジンID 0000050494
このマガジンは、まぐまぐから配信されています。
********************************
★目次★
・例題2
・復習
・予告
********************************
★例題2★
・ユーザーが入力した値が、素数であるかを判定しなさい。
素数とは、1とその数値以外に約数がないもののことである。
但し、数値の平方根以下に約数はありません。(数学による)
#include<iostream>
#include<cmath> /* 数学関数ヘッダ */
using namespace std;
int main(void){
int input, i, limit;
do{
cout << "素数かどうか判定したい数値を入力せよ。 : ";
cin >> input;
}while(input <= 1); /* 入力値は1以下にしたい */
limit = sqrt(input); /* 平方根を求める */
for(i=2; i<=limit; i++){ /* 平方根の値までしらべる */
if( (input%i)==0 ){ /* 約数があったら */
break; /* ループから抜ける */
}
}
if(i!=limit+1){ /* 約数が見つからなかったら */
cout << input << "は素数でない" << endl;
}
else{
cout << input << "は素数です" << endl;
}
return 0;
}
【解説】
cmathは、数学関係の関数を集めたものです。
ここでは、平方根を求めるために必要でした。
「約数は平方根以下にない」ことが分かっているので、
forループは、平方根までの繰り返しになっています。
※平方根を求めるには、「sqrt( )」を使用します。
(スクウェア ルートの略)
入力値を割った余りがゼロになったら、
その数が割り切れたということになります。
つまり、素数でないことが判明するので、ループからbreakします。
途中でbreakしたならば、i の値は、limitまでは到達していない
ハズです。
つまり、i が limit でなかったら
割りきれる数がある → 素数でない といえます。
********************************
★免責事項★
このメールマガジンのあらゆる事項について、
運用は自由ですが、個人で責任を持ってください。
作者は一切責任を持ちません。ご注意ください。
********************************
講読解除はこちら
http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html
バックナンバーはこちら
http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html
内容について質問やご意見など
smukun@hotmail.com
筆者のWebサイト(むーくんの理学的なんでも講座)
http://members.tripod.co.jp/mukun_mmg/
************************************